package com.youlv.yl.util;

import redis.clients.jedis.GeoRadiusResponse;
import redis.clients.jedis.GeoUnit;
import redis.clients.jedis.Jedis;

import java.util.List;
import java.util.Map;

/**
 * @author fenghe
 * @date 2021/12/30 15:54
 */
public class JedisUtils {
    private static Jedis jedis;

    static {
        // 完成实例化，连接Redis服务器
        jedis = new Jedis("81.68.227.129", 6380);
        jedis.auth("zzjava");
    }
    // 新增

    /** String类型 新增并设置有效期*/
    public static void addString(String key, String value, long seconds) {
        jedis.setex(key, seconds, value);
    }

    /** String类型 新增*/
    public static void addString(String key, String value) {
        jedis.set(key, value);
    }

    /** hashMap类型 新增*/
    public static void addHash(String key, String field, String value) {
        jedis.hset(key, field, value);
    }

    /** hashMap类型 新增*/
    public static void addHash(String key, Map<String, String> map) {
        jedis.hmset(key, map);
    }

    /** List类型 从头新增*/
    public static void addListStart(String key, String value) {
        jedis.lpush(key, value);
    }

    /** List类型 从尾添加*/
    public static void addListEnd(String key, String value) {
        jedis.rpush(key, value);
    }

    /** List类型 通过索引获取元素*/
    public static String getListParamByIndex(String key, Long index) {
        return jedis.lindex(key, index);
    }

    /** List类型 查询list中元素的个数*/
    public static Long getListSize(String key) {
        return jedis.llen(key);
    }

    /** Geo类型 新增*/
    public static void addGeo(String key, double lon, double lat, String address) {
        jedis.geoadd(key, lon, lat, address);

    }

    /** String类型 获取*/
    public static String getString(String key) {
        return jedis.get(key);
    }

    /** hash类型 获取*/
    public static String getHash(String key, String field) {
        return jedis.hget(key, field);
    }

    /** hash类型 获取元素个数*/
    public static Long getHashSize(String key) {
        return jedis.hlen(key);
    }

    /** String类型 校验*/
    public static boolean exists(String... keys) {
        return jedis.exists(keys) > 0;
    }

    /** hash类型 校验*/
    public static boolean existsHash(String key, String field) {
        return jedis.hexists(key, field);
    }

    /** String类型 删除*/
    public static void delKey(String key) {
        jedis.del(key);
    }

    /** hash类型 删除*/
    public static void delHash(String key, String field) {
        jedis.hdel(key, field);
    }

    /** geo操作*/
    public static double geodist(String key, String address1, String address2) {
        return jedis.geodist(key, address1, address2, GeoUnit.M);
    }
    public static List<GeoRadiusResponse> georadius(String key, double lon, double lat, double radius) {
        return jedis.georadius(key, lon, lat, radius, GeoUnit.M);
    }
    /** 系统命令*/
    public static void expire(String key, long seconds) {
        jedis.expire(key, seconds);
    }

    public static long ttl(String key) {
        return jedis.ttl(key);
    }

    public static void  close(){ jedis.close();}

}
